Traffic & Engagement

Row

Page Views

New vs. Returning Visitors

Row

Average Time on Page (seconds)

Bounce Rate (% of one-page sessions)

Audience

Row

How new visitors find our site…

How return visitors find our site…

Row

ALL USERS: Social Media Breakdown (% of sessions)

ALL USERS: Device Breakdown (% of sessions)

---
title: "ATLS Analytics 2017 - 2018"
output: 
  flexdashboard::flex_dashboard:
    orientation: rows
    social: menu
    source_code: embed
---

```{r setup, include=FALSE}
library(flexdashboard)
require(tidyverse)
require(readxl)
require(RColorBrewer)
require(plotly)
john_theme <- theme(text=element_text(size = 14, family="Times New Roman"),
                    axis.text = element_text(size = 14),
                    panel.background = element_rect(fill="white"),
                    panel.grid.minor = element_line(color="grey90"),
                    panel.grid.major = element_line(color="grey90"),
                    plot.margin = unit(c(0.5,0.5,0.5,0.5), "cm"),
                    plot.caption = element_text(size = 9))

df <- read_excel("~/Desktop/dec18report.xlsx", skip = 1)

df2 <- df %>% 
  gather("quarter2", "value", Q1_17:Q4_18)

df2$quarter2 <- factor(df2$quarter2, levels = c("Q1_17", "Q2_17", "Q3_17", "Q4_17", "Q1_18", "Q2_18", "Q3_18", "Q4_18"))
df2$quarters3 <- str_sub(df2$quarter2, 1, 2)
df2$year <- str_sub(df2$quarter2, 4, 5)
```

Traffic & Engagement
=======================================================================

Row
-----------------------------------------------------------------------
### Page Views
```{r}
a <- df2 %>%
  filter(quarters == "total_views" | quarters == "unique_views") %>% 
  ggplot(aes(quarter2, value)) +
  geom_point(aes(color = quarters), size = 3) +
  geom_line(aes(group = quarters, color = quarters), size = 1) +
  scale_y_continuous(limits = c(0, 30000), breaks = seq(0, 30000, 5000)) +
  john_theme +
  scale_color_manual(name = NULL, values = c("dodgerblue3", "green3")) +
  labs(x = NULL, y = NULL) +
  geom_vline(xintercept = 4.5)
ggplotly(a)
```


### New vs. Returning Visitors

```{r}
b <- df2 %>% 
  filter(quarters == "new_visitor_percent_sessions" | quarters == "return_visitor_percent_sessions") %>% 
  mutate(quarters = factor(quarters, labels = c("New Visitor", "Return Visitor"))) %>% 
  ggplot(aes(quarter2, value)) +
  geom_col(aes(fill = quarters)) +
  john_theme +
  scale_fill_manual(name = NULL, values = c("dodgerblue3", "green3")) +
  labs(x = NULL, y = NULL) 
ggplotly(b)
```

Row
-----------------------------------------------------------------------

### Average Time on Page (seconds)

```{r}
c <- df2 %>% 
  filter(quarters == "avg time on page") %>% 
  ggplot(aes(quarters3, value)) + 
  geom_col(aes(fill = year), position = "dodge") +
  scale_fill_manual(name = "Year", values = c(brewer.pal(4, "Blues")[3], brewer.pal(4, "Blues")[4])) +
  scale_y_continuous(limits = c(0, 180), breaks = seq(0, 180, 30)) +
  john_theme +
  geom_hline(yintercept = 60, linetype = "dashed", alpha = 0.3) +
  geom_hline(yintercept = 120, linetype = "dashed", alpha = 0.3) +
  labs(x = NULL, y = NULL)
ggplotly(c)
```



### Bounce Rate (% of one-page sessions)

```{r}
d <- df2 %>% 
  filter(quarters == "bounce_rate") %>% 
  ggplot(aes(quarters3, value)) + 
  geom_col(aes(fill = year), position = "dodge") +
  scale_fill_manual(name = "Year", values = c(brewer.pal(4, "Blues")[3], brewer.pal(4, "Blues")[4])) +
  scale_y_continuous(limits = c(0, 100)) +
  john_theme +
  labs(x = NULL, y = NULL)
ggplotly(d)
```

Audience
=======================================================================

Row
-----------------------------------------------------------------------

### How new visitors find our site...
```{r}
a2 <- df2 %>% 
  filter(startsWith(quarters, "new_from")) %>% 
  mutate(quarters = factor(quarters, levels = c("new_from_organic", "new_from_direct", "new_from_social", "new_from_referral", "new_from_email"), labels = c("Organic", "Direct", "Social", "Referral", "Email"))) %>% 
  ggplot(aes(quarter2, value)) + 
  geom_point(aes(color = quarters)) +
  geom_line(aes(group = quarters, color = quarters), size = 1) +
  john_theme +
  geom_vline(xintercept = 4.5, alpha = 0.3, size = 3) +
  scale_color_brewer(name = NULL, palette = "Set2") +
  labs(title = "How new visitors find our site...", x = NULL, y = "Users")
ggplotly(a2)
```

### How return visitors find our site...

```{r}
b2 <- df2 %>% 
  filter(startsWith(quarters, "return_from")) %>% 
  mutate(quarters = factor(quarters, levels = c("return_from_organic", "return_from_direct", "return_from_social", "return_from_referral", "return_from_email"), labels = c("Organic", "Direct", "Social", "Referral", "Email"))) %>% 
  ggplot(aes(quarter2, value)) + 
  geom_point(aes(color = quarters)) +
  geom_line(aes(group = quarters, color = quarters), size = 1) +
  john_theme +
  geom_vline(xintercept = 4.5, alpha = 0.3, size = 3) +
  scale_color_brewer(name = NULL, palette = "Set2") +
  labs(title = "How return visitors find our site...", x = NULL, y = "Users")
ggplotly(b2)
```

Row
-----------------------------------------------------------------------

### ALL USERS: Social Media Breakdown (% of sessions)
```{r}
c2 <- df2 %>% 
  filter(startsWith(quarters, "social")) %>% 
  mutate(quarters = factor(quarters, levels = c("social_twitter", "social_fb", "social_reddit"), labels = c("Twitter", "Facebook", "Reddit"))) %>% 
  ggplot(aes(quarter2, value)) + 
  geom_col(aes(fill = quarters)) +
  john_theme +
  scale_fill_brewer(name = NULL, palette = "Accent") +
  scale_y_continuous(limits = c(0, 100)) +
  labs(x = NULL, y = "% of sessions")
ggplotly(c2)
```

### ALL USERS: Device Breakdown (% of sessions)
```{r}
d2 <- df2 %>% 
  filter(startsWith(quarters, "device_")) %>% 
  mutate(quarters = factor(quarters, levels = c("device_desktop", "device_mobile", "device_tablet"), labels = c("Desktop", "Mobile", "Tablet"))) %>%
  ggplot(aes(quarter2, value)) + 
  geom_col(aes(fill = quarters)) +
  john_theme +
  scale_fill_brewer(name = NULL, palette = "Pastel1") +
  labs(x = NULL, y = "% of sessions")
ggplotly(d2)
```